From ff1343a594383e0d88b1aecdf34025dd3ee36ed6 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sat, 19 Dec 2009 13:46:18 +0100 Subject: [PATCH] Disconnect signal handlers on adjustment in destroy handler Not removing the signal handler caused crashes if the adjustment survived longer than the scrolled window and still emitted signals. This could happen inside WebKit. --- gtk/gtkscrolledwindow.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index b4112ae5f7..d2d876957f 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -852,6 +852,9 @@ gtk_scrolled_window_destroy (GtkObject *object) if (scrolled_window->hscrollbar) { + g_signal_handlers_disconnect_by_func (gtk_range_get_adjustment (GTK_RANGE (scrolled_window->hscrollbar)), + gtk_scrolled_window_adjustment_changed, + scrolled_window); gtk_widget_unparent (scrolled_window->hscrollbar); gtk_widget_destroy (scrolled_window->hscrollbar); g_object_unref (scrolled_window->hscrollbar); @@ -859,6 +862,9 @@ gtk_scrolled_window_destroy (GtkObject *object) } if (scrolled_window->vscrollbar) { + g_signal_handlers_disconnect_by_func (gtk_range_get_adjustment (GTK_RANGE (scrolled_window->vscrollbar)), + gtk_scrolled_window_adjustment_changed, + scrolled_window); gtk_widget_unparent (scrolled_window->vscrollbar); gtk_widget_destroy (scrolled_window->vscrollbar); g_object_unref (scrolled_window->vscrollbar); -- 2.30.2